//高阶函数-函数作为返回值

function makeFn() {
    let msg = 'Hello function'
    return function () {
        console.log(msg)
    }
}

// 1、第一种语法
// const fn = makeFn()
// fn()

// 2、第二种语法
// makeFn()()


function once(fn) {
    let done = false
    return function () {
        if (!done) {
            done = true
            return fn.apply(this, arguments)
        }
    }
}

let pay = once(function (money){
    console.log(`支付:${money}RMB`)
})

pay(5)
pay(5)
pay(5)
pay(5) 

//补充，apply（）方法接收数组形式的参数
// call()方法分别接受参数。